home *** CD-ROM | disk | FTP | other *** search
- /*
- File: ListLink.h
-
- Contains: declaration and inline implementation of ListLink class
-
- */
-
- #ifndef _LISTLINK_
- #define _LISTLINK_
- #pragma once
-
- #include <Types.h>
-
- class LinkedList;
-
- class ListLink
- {
- friend class LinkedListIterator;
- friend class LinkedList;
- friend class LinkedListOfObject;
-
- private:
- ListLink* fPrevLink;
- ListLink* fNextLink;
- LinkedList* fList;
-
- protected:
- inline ListLink(ListLink *prev = nil, ListLink *next = nil, LinkedList* list = nil);
- virtual ~ListLink();
-
- inline ListLink* GetPrevLink();
- inline ListLink* GetNextLink();
- inline LinkedList* GetList();
- virtual void* GetObjectPtr();
-
- inline void SetPrevLink(ListLink *prev);
- inline void SetNextLink(ListLink *next);
- inline void SetLinkedList(LinkedList *list);
-
- void Link(ListLink *prev, ListLink *next, LinkedList* list);
- void Unlink(void);
-
- bool IsBefore(ListLink *link);
- bool IsAfter(ListLink *link);
- };
-
- ListLink::ListLink(ListLink *prev, ListLink *next, LinkedList* list)
- {
- fPrevLink = prev;
- fNextLink = next;
- fList = list;
- }
-
- inline LinkedList* ListLink::GetList()
- {
- return fList;
- }
-
- inline ListLink* ListLink::GetPrevLink()
- {
- return fPrevLink;
- }
-
- inline ListLink* ListLink::GetNextLink()
- {
- return fNextLink;
- }
-
- inline void ListLink::SetPrevLink( ListLink *prevLink )
- {
- fPrevLink = prevLink;
- }
-
- inline void ListLink::SetNextLink( ListLink *nextLink )
- {
- fNextLink = nextLink;
- }
-
- inline void ListLink::SetLinkedList( LinkedList *list )
- {
- fList = list;
- }
-
- //--------------------------------------------------------------------------------
- // Class for a dynamicly allocated link to an object
- class ObjectLink : public ListLink
- {
- private:
- void* fObject;
-
- public:
- inline ObjectLink(void* object = nil)
- : fObject(object) {}
- virtual ~ObjectLink();
-
- virtual void* GetObjectPtr();
- };
-
-
- #endif // _LISTLINK_
-
-